/*
 * tw_timer.h
 *
 *  Created on: 2015-5-15
 *      Author: likui
 */

#ifndef TW_TIMER_H_
#define TW_TIMER_H_

#include <stdbool.h>

#define SI	1
#define SLOTS_N	10

typedef struct http_conn_t http_conn_t;
typedef void (*cb_func_t)(http_conn_t *, bool, int) ;

typedef struct tw_timer_t {
	int 			rotation;		// 记录定时器在时间轮转多少圈后生效
	int 			time_slot;		// 记录定时器数据在时间轮上哪个槽
	cb_func_t		cb_func;		// 定时器回调函数
	int 			epollfd;
	http_conn_t	*http_conn;	// 记录HTTP连接数据

	struct tw_timer_t *next;				// 指向下一个定时器
	struct tw_timer_t *prev;				// 指向前一个定时器
}tw_timer_t;

tw_timer_t *tw_timer_create(int rotation, int ts);
void tw_timer_destroy(tw_timer_t **timer);
void tw_timer_list_destroy(tw_timer_t **head);
void tw_timer_list_add(tw_timer_t **head, tw_timer_t *timer);
tw_timer_t *tw_timer_list_del(tw_timer_t **head, tw_timer_t *timer);

#endif /* TW_TIMER_H_ */
